<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<!-- Mirrored from www.wolfssl.com/wolfSSL/Docs-wolfssl-manual-18-15-wolfcrypt-api-ed25519.html by HTTrack Website Copier/3.x [XR&CO'2014], Tue, 17 Jan 2017 13:40:52 GMT -->
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=UTF-8" /><!-- /Added by HTTrack -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="Generator" content="iWeb 3.0.4"/>
<meta name="iWeb-Build" content="local-build-20170103"/>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7"/>
<meta name="viewport" content="width=770"/>
<title>wolfSSL - Docs | wolfCrypt Manual - Chapter 18.15 (Ed25519)</title>
<link rel="stylesheet" type="text/css" media="screen,print" href="Docs-wolfssl-manual-18-15-wolfcrypt-api-ed25519_files/Docs-wolfssl-manual-18-15-wolfcrypt-api-ed25519.css"/>
<!--[if lt IE 8]><link rel='stylesheet' type='text/css' media='screen,print' href='Docs-wolfssl-manual-18-15-wolfcrypt-api-ed25519_files/Docs-wolfssl-manual-18-15-wolfcrypt-api-ed25519IE.css'/><![endif]-->
<!--[if gte IE 8]><link rel='stylesheet' type='text/css' media='screen,print' href='Media/IE8.css'/><![endif]-->
<script type="text/javascript" src="Scripts/iWebSite.js"></script>
<script type="text/javascript" src="Docs-wolfssl-manual-18-15-wolfcrypt-api-ed25519_files/Docs-wolfssl-manual-18-15-wolfcrypt-api-ed25519.js"></script>
<meta name="description" content="wolfSSL - Docs | wolfCrypt Manual - Chapter 18.15 (Ed25519)"/><meta name="keywords" content="embedded ssl, ssl library, embedded security, openssl alternative, ssl api, ssl, tls, cyassl, openssl replacement, openssl api, ssl functions, small openssl, smart grid, connected home, ecc, lightweight ssl, suite b, encryption security software, ssl inspection"/><meta name="robots" content="follow,index"/> <script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','../../www.google-analytics.com/analytics.js','ga');ga('create','UA-64826966-1','auto');ga('send','pageview');</script>
 
<script>//<![CDATA[
window.zEmbed||function(e,t){var n,o,d,i,s,a=[],r=document.createElement("iframe");window.zEmbed=function(){a.push(arguments)},window.zE=window.zE||window.zEmbed,r.src="javascript:false",r.title="",r.role="presentation",(r.frameElement||r).style.cssText="display: none",d=document.getElementsByTagName("script"),d=d[d.length-1],d.parentNode.insertBefore(r,d),i=r.contentWindow,s=i.document;try{o=s}catch(c){n=document.domain,r.src='javascript:var d=document.open();d.domain="'+n+'";void(0);',o=s}o.open()._l=function(){var o=this.createElement("script");n&&(this.domain=n),o.id="js-iframe-async",o.src=e,this.t=+new Date,this.zendeskHost=t,this.zEQueue=a,this.body.appendChild(o)},o.write('<body onload="document._l();">'),o.close()}("../../assets.zendesk.com/embeddable_framework/main.js","wolfssl.zendesk.com");
//]]></script>
  </head>
<body style="background: rgb(255, 255, 255); margin: 0pt; " onload="onPageLoad();">
<div style="text-align: center; ">
<div style="margin-bottom: 20px; margin-left: auto; margin-right: auto; margin-top: 20px; overflow: hidden; position: relative; word-wrap: break-word;  background: rgb(255, 255, 255); text-align: left; width: 770px; " id="body_content">
<div style="float: left; margin-left: 0px; position: relative; width: 770px; z-index: 0; " id="nav_layer">
<div style="height: 0px; line-height: 0px; " class="bumper"> </div>
<div style="clear: both; height: 0px; line-height: 0px; " class="spacer"> </div>
</div>
<div style="float: left; height: 0px; line-height: 0px; margin-left: 0px; position: relative; width: 770px; z-index: 10; " id="header_layer">
<div style="height: 0px; line-height: 0px; " class="bumper"> </div>
</div>
<div style="margin-left: 0px; position: relative; width: 770px; z-index: 5; " id="body_layer">
<div style="height: 0px; line-height: 0px; " class="bumper"> </div>
<div id="id1" style="height: 38px; left: 375px; position: absolute; top: 157px; width: 361px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_361_38" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style">wolfSSL Manual</p>
</div>
</div>
</div>
<div id="id2" style="height: 24px; left: 193px; position: absolute; top: 122px; width: 268px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_268_24" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_1"><a class="class1" title="Docs.html" href="Docs.html">Docs</a> <span class="style">-&gt;</span> <span class="style_1">wolfSSL Manual</span></p>
</div>
</div>
</div>
<div style="height: 1px; width: 698px;  height: 1px; left: 37px; position: absolute; top: 220px; width: 698px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 698px; ">
<img src="Docs-wolfssl-manual-18-15-wolfcrypt-api-ed25519_files/shapeimage_1.jpg" alt="" style="height: 1px; left: 0px; position: absolute; top: 0px; width: 698px; "/>
</div>
</div>
<div style="height: 37px; width: 545px;  height: 37px; left: 191px; position: absolute; top: 80px; width: 545px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 545px; ">
<img src="Docs-wolfssl-manual-18-15-wolfcrypt-api-ed25519_files/shapeimage_2.png" alt="" style="height: 37px; left: 0px; position: absolute; top: 0px; width: 545px; "/>
</div>
</div>
<div id="id3" style="height: 25px; left: 200px; position: absolute; top: 84px; width: 43px; z-index: 1; " class="style_SkipStroke_1 shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_43_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_2"><a class="class2" title="Home.html" href="Home.html">Home</a></p>
</div>
</div>
</div>
<div id="id4" style="height: 25px; left: 365px; position: absolute; top: 84px; width: 72px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_72_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_3"><a class="class3" title="https://wolfssl.com/wolfSSL/download/downloadForm.php" href="https://wolfssl.com/wolfSSL/download/downloadForm.php">Download</a></p>
</div>
</div>
</div>
<div id="id5" style="height: 25px; left: 439px; position: absolute; top: 84px; width: 59px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_59_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_3"><a class="class4" title="License.html" href="License.html">License</a></p>
</div>
</div>
</div>
<div id="id6" style="height: 25px; left: 499px; position: absolute; top: 84px; width: 44px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_44_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_3"><a class="class5" title="Blog/Blog.html" href="Blog/Blog.html">Blog</a></p>
</div>
</div>
</div>
<div id="id7" style="height: 25px; left: 589px; position: absolute; top: 84px; width: 80px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_80_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_3"><a class="class6" title="Community.html" href="Community.html">Community</a></p>
</div>
</div>
</div>
<div style="height: 36px; width: 1px;  height: 36px; left: 245px; position: absolute; top: 81px; width: 0px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 0px; ">
<img src="Docs-wolfssl-manual-18-15-wolfcrypt-api-ed25519_files/shapeimage_3.png" alt="" style="height: 36px; left: 0px; position: absolute; top: 0px; width: 1px; "/>
</div>
</div>
<div style="height: 37px; width: 1px;  height: 37px; left: 296px; position: absolute; top: 80px; width: 0px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 0px; ">
<img src="Docs-wolfssl-manual-18-15-wolfcrypt-api-ed25519_files/shapeimage_4.png" alt="" style="height: 37px; left: 0px; position: absolute; top: 0px; width: 1px; "/>
</div>
</div>
<div style="height: 36px; width: 1px;  height: 36px; left: 363px; position: absolute; top: 81px; width: 0px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 0px; ">
<img src="Docs-wolfssl-manual-18-15-wolfcrypt-api-ed25519_files/shapeimage_5.png" alt="" style="height: 36px; left: 0px; position: absolute; top: 0px; width: 1px; "/>
</div>
</div>
<div style="height: 36px; width: 1px;  height: 36px; left: 438px; position: absolute; top: 81px; width: 0px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 0px; ">
<img src="Docs-wolfssl-manual-18-15-wolfcrypt-api-ed25519_files/shapeimage_6.png" alt="" style="height: 36px; left: 0px; position: absolute; top: 0px; width: 1px; "/>
</div>
</div>
<div style="height: 37px; width: 1px;  height: 37px; left: 498px; position: absolute; top: 80px; width: 0px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 0px; ">
<img src="Docs-wolfssl-manual-18-15-wolfcrypt-api-ed25519_files/shapeimage_7.png" alt="" style="height: 37px; left: 0px; position: absolute; top: 0px; width: 1px; "/>
</div>
</div>
<div style="height: 37px; width: 1px;  height: 37px; left: 589px; position: absolute; top: 80px; width: 0px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 0px; ">
<img src="Docs-wolfssl-manual-18-15-wolfcrypt-api-ed25519_files/shapeimage_8.png" alt="" style="height: 37px; left: 0px; position: absolute; top: 0px; width: 1px; "/>
</div>
</div>
<div id="id8" style="height: 25px; left: 671px; position: absolute; top: 84px; width: 61px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_61_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_3"><a class="class7" title="Contact.html" href="Contact.html">Contact</a></p>
</div>
</div>
</div>
<div id="id9" style="height: 25px; left: 249px; position: absolute; top: 84px; width: 44px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_44_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_2"><a class="class8" title="About.html" href="About.html">About</a></p>
</div>
</div>
</div>
<div style="height: 36px; width: 1px;  height: 36px; left: 670px; position: absolute; top: 81px; width: 0px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 0px; ">
<img src="Docs-wolfssl-manual-18-15-wolfcrypt-api-ed25519_files/shapeimage_9.png" alt="" style="height: 36px; left: 0px; position: absolute; top: 0px; width: 1px; "/>
</div>
</div>
<div id="id10" style="height: 25px; left: 298px; position: absolute; top: 84px; width: 63px; z-index: 1; " class="style_SkipStroke_1 shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_63_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_3"><a class="class9" title="Products.html" href="Products.html">Products</a></p>
</div>
</div>
</div>
<div id="id11" style="height: 25px; left: 549px; position: absolute; top: 84px; width: 41px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_41_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_2"><a class="class10" title="Docs.html" href="Docs.html">Docs</a></p>
</div>
</div>
</div>
<div style="height: 37px; width: 1px;  height: 37px; left: 545px; position: absolute; top: 80px; width: 0px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 0px; ">
<img src="Docs-wolfssl-manual-18-15-wolfcrypt-api-ed25519_files/shapeimage_10.png" alt="" style="height: 37px; left: 0px; position: absolute; top: 0px; width: 1px; "/>
</div>
</div>
<div id="id12" style="height: 27px; left: 634px; position: absolute; top: 224px; width: 102px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_102_27" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_4"><a class="class11" title="Docs-wolfssl-manual-18-16-wolfcrypt-api-error.html" href="Docs-wolfssl-manual-18-16-wolfcrypt-api-error.html">Next Chapter</a></p>
</div>
</div>
</div>
<div id="id13" style="height: 25px; left: 35px; position: absolute; top: 224px; width: 125px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_125_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_5"><a class="class12" title="Docs-wolfssl-manual-18-14-wolfcrypt-api-ecc.html" href="Docs-wolfssl-manual-18-14-wolfcrypt-api-ecc.html">Previous Chapter</a></p>
</div>
</div>
</div>
<div style="height: 22px; width: 22px;  height: 22px; left: 33px; position: absolute; top: 191px; width: 22px; z-index: 1; " class="tinyText style_SkipStroke_2">
<img src="Docs-wolfssl-manual-18-15-wolfcrypt-api-ed25519_files/PDF.png" alt="" style="border: none; height: 22px; width: 22px; "/>
</div>
<div id="id14" style="height: 25px; left: 323px; position: absolute; top: 224px; width: 125px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_125_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_6"><a title="Docs-wolfssl-manual-toc.html" href="Docs-wolfssl-manual-toc.html">Table of Contents</a></p>
</div>
</div>
</div>
<div id="id15" style="height: 5876px; left: 35px; position: absolute; top: 281px; width: 701px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_701_5876" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-top: 0pt; " class="paragraph_style_7">Chapter 18: wolfCrypt API Reference<br/></p>
<p class="paragraph_style_7"><br/></p>
<p class="paragraph_style_8">18.15  Ed25519<br/></p>
<p class="paragraph_style_8"><br/></p>
<p class="paragraph_style_9">The functions in this section expose Ed25519 functionality to calling applications.<span class="style_2"><br/></span></p>
<p class="paragraph_style_10"><br/></p>
<p class="paragraph_style_10"><br/></p>
<div class="paragraph paragraph_style_10"><div style="height: 1px; width: 693px;  height: 1px; left: 0px; position: relative; top: 1px; width: 693px; " class="tinyText inline-block"><div style="position: relative; width: 693px; "><img src="Docs-wolfssl-manual-18-15-wolfcrypt-api-ed25519_files/shapeimage_11.jpg" alt="" style="height: 1px; left: 0px; position: absolute; top: 0px; width: 693px; "/></div></div><br/></div>
<p class="paragraph_style_10"><br/></p>
<p class="paragraph_style_11"><br/></p>
<p class="paragraph_style_12">wc_ed25519_make_key<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Synopsis:<br/></p>
<p class="paragraph_style_9">#include &lt;wolfssl/wolfcrypt/ed25519.h&gt;<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_9">int wc_ed25519_make_key(RNG* rng, int keySz, ed25519_key* key);<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Description:<br/></p>
<p class="paragraph_style_9">This function generates a new ed25519_key and stores it in key. <br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Return Values:<br/></p>
<p class="paragraph_style_9"><span class="style_3">0</span>: Returned upon successfully making an ed25519_key<br/></p>
<p class="paragraph_style_9"><span class="style_3">BAD_FUNC_ARG</span>: Returned if rng or key evaluate to NULL, or if the specified key size is not 32 bytes (ed25519 has 32 byte keys)<br/></p>
<p class="paragraph_style_9"><span class="style_3">MEMORY_E</span>: Returned if there is an error allocating memory during function execution<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Parameters:<br/></p>
<p class="paragraph_style_9"><span class="style_3">rng</span> - pointer to an initialized RNG object with which to generate the key<br/></p>
<p class="paragraph_style_9"><span class="style_3">keysize</span> - length of key to generate. Should always be 32 for ed25519<br/></p>
<p class="paragraph_style_9"><span class="style_3">key</span> - pointer to the ed25519_key for which to generate a key<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Example:<br/></p>
<p class="paragraph_style_14">ed25519_key key;<br/></p>
<p class="paragraph_style_14">wc_ed25519_init(&amp;key);<br/></p>
<p class="paragraph_style_14"><br/></p>
<p class="paragraph_style_14">RNG rng;<br/></p>
<p class="paragraph_style_14">wc_InitRng(&amp;rng);<br/></p>
<p class="paragraph_style_14"><br/></p>
<p class="paragraph_style_14">wc_ed25519_make_key(&amp;rng, 32, &amp;key); // initialize 32 byte ed25519 key<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">See Also:<br/></p>
<p class="paragraph_style_9">wc_ed25519_init<br/></p>
<p class="paragraph_style_9"><br/></p>
<div class="paragraph paragraph_style_9"><div style="height: 1px; width: 693px;  height: 1px; left: 0px; position: relative; top: 1px; width: 693px; " class="tinyText inline-block"><div style="position: relative; width: 693px; "><img src="Docs-wolfssl-manual-18-15-wolfcrypt-api-ed25519_files/shapeimage_12.jpg" alt="" style="height: 1px; left: 0px; position: absolute; top: 0px; width: 693px; "/></div></div><br/></div>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12"><br/></p>
<p class="paragraph_style_12">wc_ed25519_sign_msg<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Synopsis:<br/></p>
<p class="paragraph_style_9">#include &lt;wolfssl/wolfcrypt/ed25519.h&gt;<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_9">int wc_ed25519_sign_msg(const byte* in, word32 inlen, byte* out, word32 *outlen, <br/></p>
<p class="paragraph_style_9">ed25519_key* key);<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Description:<br/></p>
<p class="paragraph_style_9">This function signs a message digest using an ed25519_key object to guarantee authenticity. <br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Return Values:<br/></p>
<p class="paragraph_style_9"><span class="style_3">0</span>: Returned upon successfully generating a signature for the message digest<br/></p>
<p class="paragraph_style_9"><span class="style_3">BAD_FUNC_ARG</span>: Returned any of the input parameters evaluate to NULL, or if the output buffer is too small to store the generated signature<br/></p>
<p class="paragraph_style_9"><span class="style_3">MEMORY_E</span>: Returned if there is an error allocating memory during function execution<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Parameters:<br/></p>
<p class="paragraph_style_9"><span class="style_3">in</span> - pointer to the buffer containing the message to sign<br/></p>
<p class="paragraph_style_9"><span class="style_3">inlen</span> - length of the message to sign<br/></p>
<p class="paragraph_style_9"><span class="style_3">out</span> - buffer in which to store the generated signature<br/></p>
<p class="paragraph_style_9"><span class="style_3">outlen</span> - max length of the output buffer. Will store the bytes written to out upon successfully generating a message signature<br/></p>
<p class="paragraph_style_9"><span class="style_3">key</span> - pointer to a private ed25519_key with which to generate the signature<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Example:<br/></p>
<p class="paragraph_style_14">ed25519_key key;<br/></p>
<p class="paragraph_style_14">RNG rng;<br/></p>
<p class="paragraph_style_14">int ret, sigSz;<br/></p>
<p class="paragraph_style_14"><br/></p>
<p class="paragraph_style_14">byte sig[64]; // will hold generated signature<br/></p>
<p class="paragraph_style_14">sigSz = sizeof(sig);<br/></p>
<p class="paragraph_style_14">byte message[] = { /* initialize with message */ };<br/></p>
<p class="paragraph_style_14"><br/></p>
<p class="paragraph_style_14">wc_InitRng(&amp;rng); // initialize rng<br/></p>
<p class="paragraph_style_14">wc_ed25519_init(&amp;key); // initialize key<br/></p>
<p class="paragraph_style_14">wc_ed25519_make_key(&amp;rng, 32, &amp;key); // make public/private key pair<br/></p>
<p class="paragraph_style_14"><br/></p>
<p class="paragraph_style_14">ret = wc_ed25519_sign_msg(message, sizeof(message), sig, &amp;sigSz, &amp;key);<br/></p>
<p class="paragraph_style_14"><br/></p>
<p class="paragraph_style_14">if ( ret != 0 ) {<br/></p>
<p class="paragraph_style_14">// error generating message signature<br/></p>
<p class="paragraph_style_14">}<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">See Also:<br/></p>
<p class="paragraph_style_9">wc_ed25519_verify_msg<br/></p>
<p class="paragraph_style_9"><br/></p>
<div class="paragraph paragraph_style_9"><div style="height: 1px; width: 693px;  height: 1px; left: 0px; position: relative; top: 1px; width: 693px; " class="tinyText inline-block"><div style="position: relative; width: 693px; "><img src="Docs-wolfssl-manual-18-15-wolfcrypt-api-ed25519_files/shapeimage_13.jpg" alt="" style="height: 1px; left: 0px; position: absolute; top: 0px; width: 693px; "/></div></div><br/></div>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12"><br/></p>
<p class="paragraph_style_12">wc_ed25519_verify_msg<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Synopsis:<br/></p>
<p class="paragraph_style_9">#include &lt;wolfssl/wolfcrypt/ed25519.h&gt;<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_9">int wc_ed25519_verify_msg(byte* sig, word32 siglen, const byte* msg, word32 msglen,<br/></p>
<p class="paragraph_style_9">int* stat, ed25519_key* key);<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Description:<br/></p>
<p class="paragraph_style_9">This function verifies the ed25519 signature of a message to ensure authenticity. It returns the answer through stat, with 1 corresponding to a valid signature, and 0 corresponding to an invalid signature.<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Return Values:<br/></p>
<p class="paragraph_style_9"><span class="style_3">0</span>: Returned upon successfully performing the signature verification. Note: This does not mean that the signature is verified. The authenticity information is stored instead in stat<br/></p>
<p class="paragraph_style_9"><span class="style_3">BAD_FUNC_ARG</span>: Returned if any of the input parameters evaluate to NULL, or if the siglen does not match the actual length of a signature<br/></p>
<p class="paragraph_style_9"><span class="style_3">1</span>: Returned if verification completes, but the signature generated does not match the signature provided<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Parameters:<br/></p>
<p class="paragraph_style_9"><span class="style_3">sig</span> - pointer to the buffer containing the signature to verify<br/></p>
<p class="paragraph_style_9"><span class="style_3">siglen</span> - length of the signature to verify<br/></p>
<p class="paragraph_style_9"><span class="style_3">msg</span> - pointer to the buffer containing the message to verify<br/></p>
<p class="paragraph_style_9"><span class="style_3">msglen</span> - length of the message to verify<br/></p>
<p class="paragraph_style_9"><span class="style_3">stat</span> - pointer to the result of the verification. 1 indicates the message was successfully verified<br/></p>
<p class="paragraph_style_9"><span class="style_3">key</span> - pointer to a public ed25519 key with which to verify the signature<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Example:<br/></p>
<p class="paragraph_style_14">ed25519_key key;<br/></p>
<p class="paragraph_style_14">int ret, verified = 0;<br/></p>
<p class="paragraph_style_14"><br/></p>
<p class="paragraph_style_14">byte sig[] { /* initialize with received signature */ };<br/></p>
<p class="paragraph_style_14">byte msg[] = { /* initialize with message */ };<br/></p>
<p class="paragraph_style_14"><br/></p>
<p class="paragraph_style_14">// initialize key with received public key<br/></p>
<p class="paragraph_style_14"><br/></p>
<p class="paragraph_style_14">ret = wc_ed25519_verify_msg(sig, sizeof(sig), msg, sizeof(msg), &amp;verified, &amp;key);<br/></p>
<p class="paragraph_style_14"><br/></p>
<p class="paragraph_style_14">if ( return &lt; 0 ) {<br/></p>
<p class="paragraph_style_14">// error performing verification<br/></p>
<p class="paragraph_style_14">} else if ( verified == 0  )<br/></p>
<p class="paragraph_style_14">// the signature is invalid<br/></p>
<p class="paragraph_style_14">}<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">See Also:<br/></p>
<p class="paragraph_style_9">wc_ed25519_sign_msg<br/></p>
<p class="paragraph_style_9"><br/></p>
<div class="paragraph paragraph_style_9"><div style="height: 1px; width: 693px;  height: 1px; left: 0px; position: relative; top: 1px; width: 693px; " class="tinyText inline-block"><div style="position: relative; width: 693px; "><img src="Docs-wolfssl-manual-18-15-wolfcrypt-api-ed25519_files/shapeimage_14.jpg" alt="" style="height: 1px; left: 0px; position: absolute; top: 0px; width: 693px; "/></div></div><br/></div>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12"><br/></p>
<p class="paragraph_style_12">wc_ed25519_init<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Synopsis:<br/></p>
<p class="paragraph_style_9">#include &lt;wolfssl/wolfcrypt/ed25519.h&gt;<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_9">int wc_ed25519_init(ed25519_key* key);<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Description:<br/></p>
<p class="paragraph_style_9">This function initializes an ed25519_key object for future use with message verification.<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Return Values:<br/></p>
<p class="paragraph_style_9"><span class="style_3">0</span>: Returned upon successfully initializing the ed25519_key object<br/></p>
<p class="paragraph_style_9"><span class="style_3">BAD_FUNC_ARG</span>: Returned if key is NULL<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Parameters:<br/></p>
<p class="paragraph_style_9"><span class="style_3">key</span> - pointer to the ed25519_key object to initialize<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Example:<br/></p>
<p class="paragraph_style_14">ed25519_key key;<br/></p>
<p class="paragraph_style_14">wc_ed25519_init(&amp;key);<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">See Also:<br/></p>
<p class="paragraph_style_9">wc_ed25519_make_key, wc_ed25519_free<br/></p>
<p class="paragraph_style_9"><br/></p>
<div class="paragraph paragraph_style_9"><div style="height: 1px; width: 693px;  height: 1px; left: 0px; position: relative; top: 1px; width: 693px; " class="tinyText inline-block"><div style="position: relative; width: 693px; "><img src="Docs-wolfssl-manual-18-15-wolfcrypt-api-ed25519_files/shapeimage_15.jpg" alt="" style="height: 1px; left: 0px; position: absolute; top: 0px; width: 693px; "/></div></div><br/></div>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12"><br/></p>
<p class="paragraph_style_12">wc_ed25519_free<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Synopsis:<br/></p>
<p class="paragraph_style_9">#include &lt;wolfssl/wolfcrypt/ed25519.h&gt;<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_9">void wc_ed25519_free(ed25519_key* key);<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Description:<br/></p>
<p class="paragraph_style_9">This function frees an ed25519 object after it has been used.<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Return Values:<br/></p>
<p class="paragraph_style_9">No return value for this function. <br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Parameters:<br/></p>
<p class="paragraph_style_9"><span class="style_3">key</span> - pointer to the ed25519_key object to free<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Example:<br/></p>
<p class="paragraph_style_14">ed25519_key key;<br/></p>
<p class="paragraph_style_14">// initialize key and perform secure exchanges<br/></p>
<p class="paragraph_style_14">...<br/></p>
<p class="paragraph_style_14"><br/></p>
<p class="paragraph_style_14">wc_ed25519_free(&amp;key);<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">See Also:<br/></p>
<p class="paragraph_style_9">wc_ed25519_init<br/></p>
<p class="paragraph_style_9"><br/></p>
<div class="paragraph paragraph_style_9"><div style="height: 1px; width: 693px;  height: 1px; left: 0px; position: relative; top: 1px; width: 693px; " class="tinyText inline-block"><div style="position: relative; width: 693px; "><img src="Docs-wolfssl-manual-18-15-wolfcrypt-api-ed25519_files/shapeimage_16.jpg" alt="" style="height: 1px; left: 0px; position: absolute; top: 0px; width: 693px; "/></div></div><br/></div>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12"><br/></p>
<p class="paragraph_style_12">wc_ed25519_import_public<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Synopsis:<br/></p>
<p class="paragraph_style_9">#include &lt;wolfssl/wolfcrypt/ed25519.h&gt;<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_9">int wc_ed25519_import_public(const byte* in, word32 inLen, ed25519_key* key);<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Description:<br/></p>
<p class="paragraph_style_9">This function imports a public ed25519_key pair from a buffer containing the public key. This function will handle both compressed and uncompressed keys.<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Return Values:<br/></p>
<p class="paragraph_style_9"><span class="style_3">0:</span> Returned on successfully importing the ed25519_key<br/></p>
<p class="paragraph_style_9"><span class="style_3">BAD_FUNC_ARG</span>: Returned if in or key evaluate to NULL, or inLen is less than the size of an ed25519 key<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Parameters:<br/></p>
<p class="paragraph_style_9"><span class="style_3">in</span> - pointer to the buffer containing the public key<br/></p>
<p class="paragraph_style_9"><span class="style_3">inLen</span> - length of the buffer containing the public key<br/></p>
<p class="paragraph_style_9"><span class="style_3">key</span> - pointer to the ed25519_key object in which to store the public key<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Example:<br/></p>
<p class="paragraph_style_14">int ret;<br/></p>
<p class="paragraph_style_14">byte pub[] = { /* initialize ed25519 public key */ };<br/></p>
<p class="paragraph_style_14"><br/></p>
<p class="paragraph_style_14">ed_25519 key;<br/></p>
<p class="paragraph_style_14">wc_ed25519_init_key(&amp;key);<br/></p>
<p class="paragraph_style_14"><br/></p>
<p class="paragraph_style_14">ret = wc_ed25519_import_public(pub, sizeof(pub), &amp;key);<br/></p>
<p class="paragraph_style_14">if ( ret != 0) {<br/></p>
<p class="paragraph_style_14">// error importing key<br/></p>
<p class="paragraph_style_14">}<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">See Also:<br/></p>
<p class="paragraph_style_9">wc_ed25519_import_private_key, wc_ed25519_export_public<br/></p>
<p class="paragraph_style_9"><br/></p>
<div class="paragraph paragraph_style_9"><div style="height: 1px; width: 693px;  height: 1px; left: 0px; position: relative; top: 1px; width: 693px; " class="tinyText inline-block"><div style="position: relative; width: 693px; "><img src="Docs-wolfssl-manual-18-15-wolfcrypt-api-ed25519_files/shapeimage_17.jpg" alt="" style="height: 1px; left: 0px; position: absolute; top: 0px; width: 693px; "/></div></div><br/></div>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12"><br/></p>
<p class="paragraph_style_12">wc_ed25519_import_private_key<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Synopsis:<br/></p>
<p class="paragraph_style_9">#include &lt;wolfssl/wolfcrypt/ed25519.h&gt;<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_9">int wc_ed25519_import_private_key(const byte* priv, word32 privSz, const byte* pub, <br/></p>
<p class="paragraph_style_9">word32 pubSz, ed25519_key* key);<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Description:<br/></p>
<p class="paragraph_style_9">This function imports a public/private ed25519 key pair from a pair of buffers. This function will handle both compressed and uncompressed keys.<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Return Values:<br/></p>
<p class="paragraph_style_9"><span class="style_3">0</span>: Returned on successfully importing the ed25519_key<br/></p>
<p class="paragraph_style_9"><span class="style_3">BAD_FUNC_ARG</span>: Returned if in or key evaluate to NULL, or if either privSz or pubSz are less than the size of an ed25519 key<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Parameters:<br/></p>
<p class="paragraph_style_9"><span class="style_3">priv</span> - pointer to the buffer containing the private key<br/></p>
<p class="paragraph_style_9"><span class="style_3">privSz</span> - size of the private key<br/></p>
<p class="paragraph_style_9"><span class="style_3">pub</span> - pointer to the buffer containing the public key<br/></p>
<p class="paragraph_style_9"><span class="style_3">pubSz</span> - length of the public key<br/></p>
<p class="paragraph_style_9"><span class="style_3">key</span> - pointer to the ed25519_key object in which to store the imported private/public key pair<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Example:<br/></p>
<p class="paragraph_style_14">int ret;<br/></p>
<p class="paragraph_style_14">byte priv[] = { /* initialize with 32 byte private key */ };<br/></p>
<p class="paragraph_style_14">byte pub[]  = { /* initialize with the corresponding public key */ };<br/></p>
<p class="paragraph_style_14"><br/></p>
<p class="paragraph_style_14">ed25519_key key;<br/></p>
<p class="paragraph_style_14">wc_ed25519_init_key(&amp;key);<br/></p>
<p class="paragraph_style_14"><br/></p>
<p class="paragraph_style_14">ret = wc_ed25519_import_private_key(priv, sizeof(priv), pub, sizeof(pub), &amp;key);<br/></p>
<p class="paragraph_style_14">if ( ret != 0) {<br/></p>
<p class="paragraph_style_14">// error importing key<br/></p>
<p class="paragraph_style_14">}<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">See Also:<br/></p>
<p class="paragraph_style_9">wc_ed25519_import_public_key, wc_ed25519_export_private_only<br/></p>
<p class="paragraph_style_9"><br/></p>
<div class="paragraph paragraph_style_9"><div style="height: 1px; width: 693px;  height: 1px; left: 0px; position: relative; top: 1px; width: 693px; " class="tinyText inline-block"><div style="position: relative; width: 693px; "><img src="Docs-wolfssl-manual-18-15-wolfcrypt-api-ed25519_files/shapeimage_18.jpg" alt="" style="height: 1px; left: 0px; position: absolute; top: 0px; width: 693px; "/></div></div><br/></div>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12"><br/></p>
<p class="paragraph_style_12">wc_ed25519_export_public<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Synopsis:<br/></p>
<p class="paragraph_style_9">#include &lt;wolfssl/wolfcrypt/ed25519.h&gt;<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_9">int wc_ed25519_export_public(ed25519_key* key, byte* out, word32* outLen);<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Description:<br/></p>
<p class="paragraph_style_9">This function exports the private key from an ed25519_key structure. It stores the public key in the buffer out, and sets the bytes written to this buffer in outLen.<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Return Values:<br/></p>
<p class="paragraph_style_9"><span class="style_3">0</span>: Returned upon successfully exporting the public key<br/></p>
<p class="paragraph_style_9"><span class="style_3">BAD_FUNC_ARG</span>: Returned if any of the input values evaluate to NULL<br/></p>
<p class="paragraph_style_9"><span class="style_3">BUFFER_E</span>: Returned if the buffer provided is not large enough to store the private key. Upon returning this error, the function sets the size required in outLen<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Parameters:<br/></p>
<p class="paragraph_style_9"><span class="style_3">key</span> - pointer to an ed25519_key structure from which to export the public key<br/></p>
<p class="paragraph_style_9"><span class="style_3">out</span> - pointer to the buffer in which to store the public key<br/></p>
<p class="paragraph_style_9"><span class="style_3">outLen</span> - pointer to a word32 object with the size available in out. Set with the number of bytes written to out after successfully exporting the private key<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Example:<br/></p>
<p class="paragraph_style_14">int ret;<br/></p>
<p class="paragraph_style_14">ed25519_key key;<br/></p>
<p class="paragraph_style_14">// initialize key, make key<br/></p>
<p class="paragraph_style_14"><br/></p>
<p class="paragraph_style_14">char pub[32];<br/></p>
<p class="paragraph_style_14">word32 pubSz = sizeof(pub);<br/></p>
<p class="paragraph_style_14"><br/></p>
<p class="paragraph_style_14">ret = wc_ed25519_export_public(&amp;key, pub, &amp;pubSz);<br/></p>
<p class="paragraph_style_14">if ( ret != 0) {<br/></p>
<p class="paragraph_style_14">// error exporting public key<br/></p>
<p class="paragraph_style_14">}<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">See Also:<br/></p>
<p class="paragraph_style_9">wc_ed25519_import_public_key, wc_ed25519_export_private_only<br/></p>
<p class="paragraph_style_9"><br/></p>
<div class="paragraph paragraph_style_9"><div style="height: 1px; width: 693px;  height: 1px; left: 0px; position: relative; top: 1px; width: 693px; " class="tinyText inline-block"><div style="position: relative; width: 693px; "><img src="Docs-wolfssl-manual-18-15-wolfcrypt-api-ed25519_files/shapeimage_19.jpg" alt="" style="height: 1px; left: 0px; position: absolute; top: 0px; width: 693px; "/></div></div><br/></div>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12"><br/></p>
<p class="paragraph_style_12">wc_ed25519_export_private_only<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Synopsis:<br/></p>
<p class="paragraph_style_9">#include &lt;wolfssl/wolfcrypt/ed25519.h&gt;<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_9">int wc_ed25519_export_private_only(ed25519_key* key, byte* out, word32* outLen);<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Description:<br/></p>
<p class="paragraph_style_9">This function exports only the private key from an ed25519_key structure. It stores the private key in the buffer out, and sets the bytes written to this buffer in outLen.<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Return Values:<br/></p>
<p class="paragraph_style_9"><span class="style_3">0</span>: Returned upon successfully exporting the private key<br/></p>
<p class="paragraph_style_9"><span class="style_3">ECC_BAD_ARG_E</span>: Returned if any of the input values evaluate to NULL<br/></p>
<p class="paragraph_style_9"><span class="style_3">BUFFER_E</span>: Returned if the buffer provided is not large enough to store the private key<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Parameters:<br/></p>
<p class="paragraph_style_9"><span class="style_3">key</span> - pointer to an ed25519_key structure from which to export the private key<br/></p>
<p class="paragraph_style_9"><span class="style_3">out</span> - pointer to the buffer in which to store the private key<br/></p>
<p class="paragraph_style_9"><span class="style_3">outLen</span> - pointer to a word32 object with the size available in out. Set with the number of bytes written to out after successfully exporting the private key<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Example:<br/></p>
<p class="paragraph_style_14">int ret;<br/></p>
<p class="paragraph_style_14">ed25519_key key;<br/></p>
<p class="paragraph_style_14">// initialize key, make key<br/></p>
<p class="paragraph_style_14"><br/></p>
<p class="paragraph_style_14">char priv[32]; // 32 bytes because only private key<br/></p>
<p class="paragraph_style_14">word32 privSz = sizeof(priv);<br/></p>
<p class="paragraph_style_14"><br/></p>
<p class="paragraph_style_14">ret = wc_ed25519_export_private_only(&amp;key, priv, &amp;privSz);<br/></p>
<p class="paragraph_style_14">if ( ret != 0) {<br/></p>
<p class="paragraph_style_14">// error exporting private key<br/></p>
<p class="paragraph_style_14">}<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">See Also:<br/></p>
<p class="paragraph_style_9">wc_ed25519_export_public, wc_ed25519_import_private_key<br/></p>
<p class="paragraph_style_9"><br/></p>
<div class="paragraph paragraph_style_9"><div style="height: 1px; width: 693px;  height: 1px; left: 0px; position: relative; top: 1px; width: 693px; " class="tinyText inline-block"><div style="position: relative; width: 693px; "><img src="Docs-wolfssl-manual-18-15-wolfcrypt-api-ed25519_files/shapeimage_20.jpg" alt="" style="height: 1px; left: 0px; position: absolute; top: 0px; width: 693px; "/></div></div><br/></div>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12"><br/></p>
<p class="paragraph_style_12">wc_ed25519_size<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Synopsis:<br/></p>
<p class="paragraph_style_9">#include &lt;wolfssl/wolfcrypt/ed25519.h&gt;<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_9">int wc_ed25519_size(ed25519_key* key);<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Description:<br/></p>
<p class="paragraph_style_9">This function returns the key size of an ed25519_key structure, or 32 bytes. <br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Return Values:<br/></p>
<p class="paragraph_style_9">Given a valid key, returns <span class="style_3">ED25519_KEY_SIZE</span> (32 bytes)<br/></p>
<p class="paragraph_style_9"><span class="style_3">BAD_FUNC_ARGS</span>: Returned if the given key is NULL<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Parameters:<br/></p>
<p class="paragraph_style_9"><span class="style_3">key</span> - pointer to an ed25519_key structure for which to get the key size<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Example:<br/></p>
<p class="paragraph_style_14">int keySz;<br/></p>
<p class="paragraph_style_14">ed25519_key key;<br/></p>
<p class="paragraph_style_14">// initialize key, make key<br/></p>
<p class="paragraph_style_14"><br/></p>
<p class="paragraph_style_14">keySz = wc_ed25519_size(&amp;key);<br/></p>
<p class="paragraph_style_14">if ( keySz == 0) {<br/></p>
<p class="paragraph_style_14">// error determining key size<br/></p>
<p class="paragraph_style_14">}<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">See Also:<br/></p>
<p class="paragraph_style_9">wc_ed25519_make_key<br/></p>
<p class="paragraph_style_9"><br/></p>
<div class="paragraph paragraph_style_9"><div style="height: 1px; width: 693px;  height: 1px; left: 0px; position: relative; top: 1px; width: 693px; " class="tinyText inline-block"><div style="position: relative; width: 693px; "><img src="Docs-wolfssl-manual-18-15-wolfcrypt-api-ed25519_files/shapeimage_21.jpg" alt="" style="height: 1px; left: 0px; position: absolute; top: 0px; width: 693px; "/></div></div><br/></div>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_12"><br/></p>
<p class="paragraph_style_12">wc_ed25519_sig_size<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Synopsis:<br/></p>
<p class="paragraph_style_9">#include &lt;wolfssl/wolfcrypt/ed25519.h&gt;<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_9">int wc_ed25519_sig_size(ed25519_key* key);<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Description:<br/></p>
<p class="paragraph_style_9">This function returns the size of an ed25519 signature (64 in bytes).<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Return Values:<br/></p>
<p class="paragraph_style_9">Given a valid key, returns <span class="style_3">ED25519_SIG_SIZE</span> (64 in bytes)<br/></p>
<p class="paragraph_style_9"><span class="style_3">0</span>: Returned if the given key is NULL<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Parameters:<br/></p>
<p class="paragraph_style_9"><span class="style_3">key</span> - pointer to an ed25519_key structure for which to get the signature size<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">Example:<br/></p>
<p class="paragraph_style_14">int sigSz;<br/></p>
<p class="paragraph_style_14">ed25519_key key;<br/></p>
<p class="paragraph_style_14">// initialize key, make key<br/></p>
<p class="paragraph_style_14"><br/></p>
<p class="paragraph_style_14">sigSz = wc_ed25519_sig_size(&amp;key);<br/></p>
<p class="paragraph_style_14">if ( sigSz == 0) {<br/></p>
<p class="paragraph_style_14">// error determining sig size<br/></p>
<p class="paragraph_style_14">}<br/></p>
<p class="paragraph_style_9"><br/></p>
<p class="paragraph_style_13">See Also:<br/></p>
<p class="paragraph_style_9">wc_ed25519_sign_msg<br/></p>
<p class="paragraph_style_10"><br/></p>
<div class="paragraph paragraph_style_10"><div style="height: 1px; width: 693px;  height: 1px; left: 0px; position: relative; top: 1px; width: 693px; " class="tinyText inline-block"><div style="position: relative; width: 693px; "><img src="Docs-wolfssl-manual-18-15-wolfcrypt-api-ed25519_files/shapeimage_22.jpg" alt="" style="height: 1px; left: 0px; position: absolute; top: 0px; width: 693px; "/></div></div><br/></div>
</div>
<div style="clear: both; height: 0px; line-height: 0px; " class="tinyText"> </div>
</div>
</div>
<div style="height: 16px; width: 20px;  height: 16px; left: 706px; position: absolute; top: 51px; width: 20px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 20px; ">
<img src="Docs-wolfssl-manual-18-15-wolfcrypt-api-ed25519_files/shapeimage_23.png" alt="" style="height: 16px; left: 0px; position: absolute; top: 0px; width: 20px; "/>
</div>
</div>
<div style="height: 19px; width: 19px;  height: 19px; left: 707px; position: absolute; top: 25px; width: 19px; z-index: 1; " class="tinyText style_SkipStroke_2">
<img src="Docs-wolfssl-manual-18-15-wolfcrypt-api-ed25519_files/United%20Kingdom(Great%20Britain).png" alt="" style="border: none; height: 19px; width: 19px; "/>
</div>
<div id="id16" style="height: 23px; left: 328px; position: absolute; top: 48px; width: 258px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_258_23" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_15">Questions? +1 (425) 245-8247</p>
</div>
</div>
</div>
<div style="height: 19px; width: 19px;  height: 19px; left: 685px; position: absolute; top: 25px; width: 19px; z-index: 1; " class="tinyText style_SkipStroke_2">
<a href="http://www.wolfssl.jp/" title="http://www.wolfssl.jp"><img src="Docs-wolfssl-manual-18-15-wolfcrypt-api-ed25519_files/japan.png" alt="" style="border: none; height: 19px; width: 19px; "/></a>
</div>
<div id="id17" style="height: 28px; left: 593px; position: absolute; top: 44px; width: 119px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_119_28" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_16"><a class="class13" title="https://www.wolfssl.com/forums" href="https://www.wolfssl.com/forums">Support <span class="style_4">Forums</span></a></p>
</div>
</div>
</div>
<div id="id18" style="height: 27px; left: 59px; position: absolute; top: 190px; width: 342px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_342_27" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_17"><a class="class14" title="https://www.wolfssl.com/documentation/wolfSSL-Manual.pdf" href="https://www.wolfssl.com/documentation/wolfSSL-Manual.pdf">Download wolfSSL Manual (PDF)</a></p>
</div>
</div>
</div>
<div style="height: 121px; width: 155px;  height: 121px; left: 32px; position: absolute; top: 5px; width: 155px; z-index: 1; " class="tinyText style_SkipStroke_2">
<a href="Home.html" title="Home.html"><img src="Docs-wolfssl-manual-18-15-wolfcrypt-api-ed25519_files/wolfssl_logo.png" alt="" style="border: none; height: 121px; width: 156px; "/></a>
</div>
<div style="height: 6157px; line-height: 6157px; " class="spacer"> </div>
</div>
<div style="height: 114px; margin-left: 0px; position: relative; width: 770px; z-index: 15; " id="footer_layer">
<div style="height: 0px; line-height: 0px; " class="bumper"> </div>
<div id="id19" style="height: 27px; left: 634px; position: absolute; top: 47px; width: 102px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_102_27" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_4"><a class="class15" title="Docs-wolfssl-manual-18-16-wolfcrypt-api-error.html" href="Docs-wolfssl-manual-18-16-wolfcrypt-api-error.html">Next Chapter</a></p>
</div>
</div>
</div>
<div id="id20" style="height: 25px; left: 35px; position: absolute; top: 47px; width: 125px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_125_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_18"><a class="class16" title="Docs-wolfssl-manual-18-14-wolfcrypt-api-ecc.html" href="Docs-wolfssl-manual-18-14-wolfcrypt-api-ecc.html">Previous Chapter</a></p>
</div>
</div>
</div>
<div id="id21" style="height: 25px; left: 323px; position: absolute; top: 47px; width: 125px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_125_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_6"><a class="class17" title="Docs-wolfssl-manual-toc.html" href="Docs-wolfssl-manual-toc.html">Table of Contents</a></p>
</div>
</div>
</div>
<div id="id22" style="height: 29px; left: 35px; position: absolute; top: 85px; width: 701px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_701_29" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_19">Copyright 2017 wolfSSL Inc.  All rights reserved.</p>
</div>
</div>
</div>
</div>
</div>
</div>
 </body>

<!-- Mirrored from www.wolfssl.com/wolfSSL/Docs-wolfssl-manual-18-15-wolfcrypt-api-ed25519.html by HTTrack Website Copier/3.x [XR&CO'2014], Tue, 17 Jan 2017 13:41:55 GMT -->
</html>
